package br.com.sistemasaude.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import br.com.sistemasaude.bean.Produto;
import br.com.sistemasaude.util.JpaUtil;

public class ProdutoDaoImp implements ProdutoDAO {
	
private final GenericDAO<Produto> dao;	
	
	EntityManager em = new JpaUtil().getEntityManager();
	
	public ProdutoDaoImp() {
		dao = new GenericDAO<Produto>(em, Produto.class);
		}
	
	public void salvar(Produto produto) {
		
		try {

			em.getTransaction().begin();
			dao.salvar(produto);
			em.getTransaction().commit();

		} catch (Exception e) {
			
			em.getTransaction().rollback();
			e.printStackTrace();
			
		} finally {
			em.close();
		}		
	}
	public List<Produto> listar() {

		List<Produto> listaProdutos = null;

		try {
			listaProdutos = (List<Produto>) em.createQuery("from Produto").getResultList();
		} catch (Exception e) {
				e.printStackTrace();
		} finally {
			em.close();
		}

		return listaProdutos;
	}
	
	public Produto buscar(Produto produto){
		
		Query query = em.createQuery("from Produto p where p.abrangencia = :abrangencia and p.plano = :plano ");
		query.setParameter("abrangencia", produto.getAbrangencia());
		query.setParameter("plano", produto.getPlano());
		
		return (Produto) query.getSingleResult();
	}
	

}
